会心或破防系数 = 78622.5
会效系数 = 27513.75
无双系数 = 75809.25


def 计算会心或破防百分比(会心或破防数值: float) -> float:
    return 会心或破防数值 / 会心或破防系数


def 会心或破防百分比计算数值(会心或破防百分比: float) -> float:
    return round(会心或破防百分比 * 会心或破防系数, 0)


def 计算无双百分比(无双数值: float) -> float:
    return 无双数值 / 无双系数


def 无双百分比计算数值(无双百分比: float) -> float:
    return round(无双百分比 * 无双系数, 0)


def 计算会效百分比(会效数值: float) -> float:
    return min(1.75 + 会效数值 / 会效系数, 3)


def 会效百分比计算数值(会效百分比: float) -> float:
    return round((会效百分比 - 1.75) * 会效系数, 0)


def 基于面板数值计算百分比(数值面板: dict) -> dict:
    # 机关 + 1%会心
    数值面板["外功会心"] = round(计算会心或破防百分比(数值面板["外功会心数值"]) + 0.01, 4)
    数值面板["外功会效"] = round(计算会效百分比(数值面板["外功会效数值"]), 4)
    数值面板["毒性内功破防"] = round(计算会心或破防百分比(数值面板["最终毒性内功破防数值"]), 4)
    数值面板["外功破防"] = round(计算会心或破防百分比(数值面板["最终外功破防数值"]), 4)
    数值面板["无双"] = round(计算无双百分比(数值面板["无双数值"]), 4)
    数值面板["武器伤害"] = (数值面板["最大武器伤害"] + 数值面板["最小武器伤害"]) / 2
    return 数值面板